
package camera;


import com.jme3.math.Vector3f;

import com.jme3.renderer.Camera;
import com.jme3.renderer.ViewPort;

/**
 * Abstract class that contains general attributes of camera classes inheriting this class
 * @author Moamen Mokhtar
 */

public abstract class AbstractCamera {
 
    protected ViewPort viewPort; // camera viewport (used in JMonkeyEngine)
	protected Vector3f pos;      // camera position
	protected Vector3f dir;		 // camera direction
	protected String name;
	
	
	public String getName(){
		return name;
	}
	
	/**
	 * Updates direction of the camera
	 * @param modelPosition
	 * 						position of the object assigned to camera
	 */
	public abstract void updateCamera(Vector3f modelPosition);
     
     /**
      * zoom in/out
      * 
      * @param value 
      *                 zooming value
      */
     protected abstract void zoom(float value);
     /**
      * returns camera location
      * @return
      * 		camera location
      */
     public abstract Vector3f getLocation();
     /**
      * returns camera direction
      * @return
      * 		camera direction
      */
     public abstract Vector3f getDirection();
     
     public abstract Camera getCam();
     public abstract void setViewPort(float[] viewPortVals);
     public abstract ViewPort getViewPort();
 	/**
 	 * This function resets the camera attributes and make it in the home
 	 * position
 	 */
 	public abstract void reset();
}
